[BACKEND-61-1] Создать метод POST /api/v1/waste/items
Разработка эндпоинта отправки продуктов в утиль с фиксацией бизнес-причины
NoteКраткая карточка задачи
- Репозиторий / Компонент:
backend-api(FastAPI Gateway). - Контракт метода:
POST /api/v1/waste/items. - Ссылка на Метод: Спецификация публикации фактов создания готовых блюд
- Статус: Готово к реализации
- Инструкция по шагам:
- На Шагах 1-2: Реализовать прием запроса от модального окна мобильного приложения «Waste Control». Принять или сгенерировать сквозной
X-Request-ID(trace_id). - На Шаге 3: Написать схему Pydantic-валидации входящего тела запроса. Поля:
space_type(строго ENUM:HOME,OFFICE),spent_items(массив объектов:food_element_id,quantity),waste_reason(строго ENUM:PROPALO,SPOILT,EXPIRED,OTHER). - Перенаправить валидированный пакет данных по внутреннему gRPC или HTTP-интерфейсу в микросервис
waste-service. - Принять пакет данных от
backend-api. Обеспечить проброс сквозного заголовкаX-Request-ID. - На Шаге 4: Выполнить синхронный gRPC-вызов к нижележащему компоненту
fridge-service, вызвав методMutateBalancesи передав структуруspent_itemsи признакspace_type. Поток выполнения блокируется до ответа холодильника. - На Шаге 8-9: При получении успешного gRPC-статуса от
fridge-service, вернуть Gateway статус200 OKдля закрытия карточки утилизации на UI мобильного приложения. - На Шаге 10: Сразу после ответа клиенту, в асинхронном режиме (Fire-and-Forget) сформировать и отправить пакет в Kafka-топик
bpds.pma.out.process.eventс признакомevent_type: "WASTED". В Payload сообщения обязательно передать массив списанного,space_type,waste_reasonи сквознойtrace_id.
- На Шагах 1-2: Реализовать прием запроса от модального окна мобильного приложения «Waste Control». Принять или сгенерировать сквозной